{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "77fdbfad-ab3f-4c41-8996-522cd560c823",
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import torch.nn as nn\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "from torch.utils.data import Dataset, DataLoader\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "import matplotlib.pyplot as plt\n",
    "from torch.utils.data import Subset\n",
    "\n",
    "# 设置设备（如果有GPU则使用GPU）\n",
    "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
    "\n",
    "# ---- Wi-Fi数据集部分 ----\n",
    "# 假设Wi-Fi数据集的路径\n",
    "training_files = [\n",
    "    './Data/U1_G1_N30_L_L1_D0_20200408_2_Labeled.csv',\n",
    "    './Data/U1_G2_N30_L_L1_D0_20200408_2_Labeled.csv',\n",
    "    './Data/U1_G3_N30_L_L1_D0_20200408_2_Labeled.csv'\n",
    "]\n",
    "\n",
    "testing_files = [\n",
    "    './Data/U1_G1_N10_L_L1_D0_20200408_1_Labeled.csv',\n",
    "    './Data/U1_G2_N10_L_L1_D0_20200408_1_Labeled.csv',\n",
    "    './Data/U1_G3_N10_L_L1_D0_20200408_1_Labeled.csv'\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "c9d320d2-e6f3-46e9-9ed3-9bd88d084f82",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training set size: 530669\n",
      "Testing set size: 147821\n"
     ]
    }
   ],
   "source": [
    "# Wi-Fi数据集定义\n",
    "class WifiDataset(Dataset):\n",
    "    def __init__(self, file_paths, transform=None):\n",
    "        self.data = []\n",
    "        self.labels = []\n",
    "        self.transform = transform\n",
    "        \n",
    "        for file_path in file_paths:\n",
    "            data = pd.read_csv(file_path)\n",
    "            # 假设数据集的最后一列是标签，前面的列是特征\n",
    "            features = data.iloc[:, :-1].values  # 特征数据\n",
    "            labels = data.iloc[:, -1].values  # 标签数据\n",
    "            self.data.append(features)\n",
    "            self.labels.append(labels)\n",
    "        \n",
    "        # 将数据拼接成一个大的数据集\n",
    "        self.data = np.concatenate(self.data, axis=0)\n",
    "        self.labels = np.concatenate(self.labels, axis=0)\n",
    "\n",
    "        # 标准化数据\n",
    "        scaler = StandardScaler()\n",
    "        self.data = scaler.fit_transform(self.data)\n",
    "        \n",
    "    def __len__(self):\n",
    "        return len(self.data)\n",
    "    \n",
    "    def __getitem__(self, idx):\n",
    "        sample = torch.tensor(self.data[idx], dtype=torch.float32)\n",
    "        # 显式将标签转换为整数类型\n",
    "        label = torch.tensor(int(self.labels[idx]), dtype=torch.long)  \n",
    "        \n",
    "        if self.transform:\n",
    "            sample = self.transform(sample)\n",
    "        \n",
    "        return sample, label\n",
    "\n",
    "\n",
    "# 加载Wi-Fi训练和测试数据\n",
    "train_wifi_data = WifiDataset(training_files)\n",
    "test_wifi_data = WifiDataset(testing_files)\n",
    "\n",
    "# 创建DataLoader\n",
    "batch_size = 64\n",
    "train_wifi_loader = DataLoader(train_wifi_data, batch_size=batch_size, shuffle=True)\n",
    "test_wifi_loader = DataLoader(test_wifi_data, batch_size=batch_size, shuffle=False)\n",
    "\n",
    "print(f\"Training set size: {len(train_wifi_data)}\")\n",
    "print(f\"Testing set size: {len(test_wifi_data)}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "44950c41-41b5-470c-9b26-200d1f581fb6",
   "metadata": {},
   "outputs": [],
   "source": [
    "# ---- 神经网络部分 ----\n",
    "# 定义神经网络模型\n",
    "class FNN(nn.Module):\n",
    "    def __init__(self, input_size, hidden_size, num_classes):\n",
    "        super(FNN, self).__init__()\n",
    "        self.fc1 = nn.Linear(input_size, hidden_size)\n",
    "        self.relu1 = nn.ReLU()\n",
    "        self.fc2 = nn.Linear(hidden_size, hidden_size)\n",
    "        self.relu2 = nn.ReLU()\n",
    "        self.fc3 = nn.Linear(hidden_size, num_classes)\n",
    "        self.softmax = nn.Softmax(dim=1)\n",
    "    \n",
    "    def forward(self, x):\n",
    "        x = self.fc1(x)\n",
    "        x = self.relu1(x)\n",
    "        x = self.fc2(x)\n",
    "        x = self.relu2(x)\n",
    "        x = self.fc3(x)\n",
    "        out = self.softmax(x)\n",
    "        return out\n",
    "\n",
    "# 定义输入、隐藏层和类别数量\n",
    "input_size = train_wifi_data.data.shape[1]  # 特征数量\n",
    "hidden_size = 64\n",
    "num_classes = len(np.unique(train_wifi_data.labels))  # 标签类别数\n",
    "\n",
    "# 实例化模型\n",
    "model = FNN(input_size, hidden_size, num_classes).to(device)\n",
    "\n",
    "# 定义损失函数和优化器\n",
    "criterion = nn.CrossEntropyLoss()\n",
    "optimizer = torch.optim.Adam(model.parameters())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "a0003065-8777-4066-8af8-c3a68d7f5db6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch [1/50], Train Loss: 7.2468, Train Accuracy: 20.22%, Val Loss: 7.4129, Val Accuracy: 3.27%\n",
      "Epoch [2/50], Train Loss: 7.2344, Train Accuracy: 21.21%, Val Loss: 7.4100, Val Accuracy: 3.57%\n",
      "Epoch [3/50], Train Loss: 7.2334, Train Accuracy: 21.27%, Val Loss: 7.4138, Val Accuracy: 3.19%\n",
      "Epoch [4/50], Train Loss: 7.2332, Train Accuracy: 21.29%, Val Loss: 7.4107, Val Accuracy: 3.50%\n",
      "Epoch [5/50], Train Loss: 7.2336, Train Accuracy: 21.24%, Val Loss: 7.4156, Val Accuracy: 3.02%\n",
      "Epoch [6/50], Train Loss: 7.2335, Train Accuracy: 21.25%, Val Loss: 7.4159, Val Accuracy: 2.99%\n",
      "Epoch [7/50], Train Loss: 7.2335, Train Accuracy: 21.25%, Val Loss: 7.4147, Val Accuracy: 3.12%\n",
      "Epoch [8/50], Train Loss: 7.2332, Train Accuracy: 21.27%, Val Loss: 7.4135, Val Accuracy: 3.23%\n",
      "Epoch [9/50], Train Loss: 7.2332, Train Accuracy: 21.27%, Val Loss: 7.4136, Val Accuracy: 3.23%\n",
      "Epoch [10/50], Train Loss: 7.2331, Train Accuracy: 21.27%, Val Loss: 7.4124, Val Accuracy: 3.34%\n",
      "Epoch [11/50], Train Loss: 7.2334, Train Accuracy: 21.25%, Val Loss: 7.4108, Val Accuracy: 3.50%\n",
      "Epoch [12/50], Train Loss: 7.2335, Train Accuracy: 21.24%, Val Loss: 7.4121, Val Accuracy: 3.37%\n",
      "Epoch [13/50], Train Loss: 7.2330, Train Accuracy: 21.29%, Val Loss: 7.4138, Val Accuracy: 3.20%\n",
      "Epoch [14/50], Train Loss: 7.2343, Train Accuracy: 21.15%, Val Loss: 7.4155, Val Accuracy: 3.03%\n",
      "Epoch [15/50], Train Loss: 7.2339, Train Accuracy: 21.20%, Val Loss: 7.4157, Val Accuracy: 3.01%\n",
      "Epoch [16/50], Train Loss: 7.2336, Train Accuracy: 21.23%, Val Loss: 7.4138, Val Accuracy: 3.20%\n",
      "Epoch [17/50], Train Loss: 7.2332, Train Accuracy: 21.27%, Val Loss: 7.4150, Val Accuracy: 3.08%\n",
      "Epoch [18/50], Train Loss: 7.2342, Train Accuracy: 21.17%, Val Loss: 7.4143, Val Accuracy: 3.15%\n",
      "Epoch [19/50], Train Loss: 7.2351, Train Accuracy: 21.07%, Val Loss: 7.4146, Val Accuracy: 3.12%\n",
      "Epoch [20/50], Train Loss: 7.2338, Train Accuracy: 21.20%, Val Loss: 7.4156, Val Accuracy: 3.02%\n",
      "Epoch [21/50], Train Loss: 7.2334, Train Accuracy: 21.24%, Val Loss: 7.4155, Val Accuracy: 3.03%\n",
      "Epoch [22/50], Train Loss: 7.2339, Train Accuracy: 21.19%, Val Loss: 7.4122, Val Accuracy: 3.36%\n",
      "Epoch [23/50], Train Loss: 7.2338, Train Accuracy: 21.21%, Val Loss: 7.4133, Val Accuracy: 3.25%\n",
      "Epoch [24/50], Train Loss: 7.2337, Train Accuracy: 21.22%, Val Loss: 7.4144, Val Accuracy: 3.14%\n",
      "Epoch [25/50], Train Loss: 7.2329, Train Accuracy: 21.29%, Val Loss: 7.4102, Val Accuracy: 3.57%\n",
      "Epoch [26/50], Train Loss: 7.2330, Train Accuracy: 21.28%, Val Loss: 7.4132, Val Accuracy: 3.27%\n",
      "Epoch [27/50], Train Loss: 7.2334, Train Accuracy: 21.25%, Val Loss: 7.4122, Val Accuracy: 3.37%\n",
      "Epoch [28/50], Train Loss: 7.2342, Train Accuracy: 21.17%, Val Loss: 7.4143, Val Accuracy: 3.15%\n",
      "Epoch [29/50], Train Loss: 7.2340, Train Accuracy: 21.19%, Val Loss: 7.4134, Val Accuracy: 3.24%\n",
      "Epoch [30/50], Train Loss: 7.2344, Train Accuracy: 21.15%, Val Loss: 7.4115, Val Accuracy: 3.43%\n",
      "Epoch [31/50], Train Loss: 7.2336, Train Accuracy: 21.22%, Val Loss: 7.4122, Val Accuracy: 3.36%\n",
      "Epoch [32/50], Train Loss: 7.2344, Train Accuracy: 21.14%, Val Loss: 7.4150, Val Accuracy: 3.08%\n",
      "Epoch [33/50], Train Loss: 7.2337, Train Accuracy: 21.21%, Val Loss: 7.4139, Val Accuracy: 3.19%\n",
      "Epoch [34/50], Train Loss: 7.2336, Train Accuracy: 21.23%, Val Loss: 7.4114, Val Accuracy: 3.45%\n",
      "Epoch [35/50], Train Loss: 7.2339, Train Accuracy: 21.19%, Val Loss: 7.4119, Val Accuracy: 3.40%\n",
      "Epoch [36/50], Train Loss: 7.2339, Train Accuracy: 21.19%, Val Loss: 7.4147, Val Accuracy: 3.12%\n",
      "Epoch [37/50], Train Loss: 7.2331, Train Accuracy: 21.27%, Val Loss: 7.4155, Val Accuracy: 3.03%\n",
      "Epoch [38/50], Train Loss: 7.2333, Train Accuracy: 21.25%, Val Loss: 7.4136, Val Accuracy: 3.23%\n",
      "Epoch [39/50], Train Loss: 7.2336, Train Accuracy: 21.22%, Val Loss: 7.4137, Val Accuracy: 3.22%\n",
      "Epoch [40/50], Train Loss: 7.2347, Train Accuracy: 21.11%, Val Loss: 7.4147, Val Accuracy: 3.11%\n",
      "Epoch [41/50], Train Loss: 7.2332, Train Accuracy: 21.27%, Val Loss: 7.4145, Val Accuracy: 3.13%\n",
      "Epoch [42/50], Train Loss: 7.2340, Train Accuracy: 21.19%, Val Loss: 7.4117, Val Accuracy: 3.41%\n",
      "Epoch [43/50], Train Loss: 7.2341, Train Accuracy: 21.18%, Val Loss: 7.4155, Val Accuracy: 3.03%\n",
      "Epoch [44/50], Train Loss: 7.2336, Train Accuracy: 21.23%, Val Loss: 7.4128, Val Accuracy: 3.30%\n",
      "Epoch [45/50], Train Loss: 7.2341, Train Accuracy: 21.18%, Val Loss: 7.4137, Val Accuracy: 3.21%\n",
      "Epoch [46/50], Train Loss: 7.2334, Train Accuracy: 21.25%, Val Loss: 7.4077, Val Accuracy: 3.81%\n",
      "Epoch [47/50], Train Loss: 7.2344, Train Accuracy: 21.15%, Val Loss: 7.4153, Val Accuracy: 3.05%\n",
      "Epoch [48/50], Train Loss: 7.2338, Train Accuracy: 21.20%, Val Loss: 7.4158, Val Accuracy: 3.00%\n",
      "Epoch [49/50], Train Loss: 7.2347, Train Accuracy: 21.12%, Val Loss: 7.4119, Val Accuracy: 3.39%\n",
      "Epoch [50/50], Train Loss: 7.2335, Train Accuracy: 21.23%, Val Loss: 7.4147, Val Accuracy: 3.11%\n"
     ]
    },
    {
     "data": {
      "image/png": "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MTNnzkSzZs3g5OSEpKQkLFmyBCEhIfj9998VaSZPnozBgwfD3d0dzZs3x59//omIiAiMHj26HO6YiIiIiIiIqGypPNgPDg5GREQEhg4dmmdfdHQ0IiIiFOtyuRz+/v4ICwuDlpYWHB0dMW/ePIwaNUqRJiEhASNHjkRMTAxMTEzQsGFDnDp1Ck2bNlWk6d+/P+Li4jBr1ixER0fDxcUFBw4cgJ2dXdneLBEREREREVE5kAiFzXVDBeLcu0REVNGwbCpd/DyJiKiiKUnZVCH67BMRERERERFR6WGwT0RERERERKRmGOwTERERERERqRkG+0RERERERERqhsE+ERERERERkZphsE9ERERERESkZhjsExEREREREakZBvtEREREREREakZL1RkgIiKij4sgCDh58iROnz6NJ0+eIC0tDVWqVEHDhg3RoUMH2NjYqDqLREREnzzW7BMREVGxpKenY86cObCxsYGXlxf279+PhIQEaGpq4uHDh/jxxx/h4OCArl274vz586rOLhER0SeNNftERERULLVq1YKHhwf++OMPdO7cGdra2nnShIeHY8OGDejfvz+mT5+OESNGqCCnREREJBEEQVB1Jj5GSUlJMDExQWJiIoyNjVWdHSIiojIvm27dugUXF5dipc3KykJ4eDicnJxKPR/lhWU9ERFVNCUpm9iMn4iIiIqluIE+AOjo6HzUgT4REdHHjs34iYiI6L3l5ORg5cqVOHHiBGQyGVq2bIkxY8ZAV1dX1VkjIiL6pDHYJyIiovc2fvx4PHjwAN7e3sjOzsa6detw+fJlbNy4UdVZIyIi+qQx2CciIqJi27lzJ3r37q1YP3z4MO7fvw9NTU0AQOfOndGsWTNVZY+IiIheY599IiIiKrbVq1ejV69eiIqKAgA0atQIo0ePxj///IO9e/diypQpaNKkiYpzSURERAz2iYiIqNj27duHAQMGwNPTE0uXLsWff/4JY2NjfP/995gxYwZsbGywYcMGVWeTiIjok8ep994Tp+MhIqKKpjzLpoSEBPz3v//FjRs3sHLlSjRo0KBMr6cKLOuJiKii4dR7REREVKYqVaqEVatWYcGCBRg8eDD++9//Ij09XdXZIiIiotcY7BMREVGxPX36FP3794erqyu+/PJLODk54cqVK9DT00ODBg1w8OBBVWeRiIiIwGCfiIiISmDIkCGQ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MG/evDzbFyxYgL59+6ogR0RERPQ2BvtERERUYidPnkS3bt3ybO/SpQtOnTqlghwRERHR2xjsExERUYmlpKRAR0cnz3ZtbW0kJSWpIEdERET0Ngb7REREVGIuLi7YvHlznu2bNm1C3bp1VZAjIiIiehsH6CMiIqISmzFjBvr06YNHjx6hXbt2AICjR49i48aN2Lp1q4pzR0RERAz2iYiIqMQ+//xz7Nq1C3PmzMG2bdugp6eH+vXrIzg4GG3atFF19oiIiD55DPaJiIjovXTr1i3fQfpCQkLQoEGD8s8QERERKbDPPhEREX2wxMRELF++HI0aNULjxo1VnR0iIqJPHoN9IiIiem/Hjh3Dl19+CSsrKyxduhRdu3bF5cuXVZ0tIiKiTx6b8RMREVGJREZGIigoCGvWrEFqair69euH7OxsbN++nSPxExERVRCs2SciIqJi69q1K+rWrYs7d+5g6dKlePbsGZYuXarqbBEREdE7WLNPRERExXb48GGMHz8e//nPf+Dk5KTq7BAREVEBWLNPRERExXb69GkkJyfD3d0dHh4eWLZsGV68eKHqbBEREdE7GOwTERFRsTVv3hyrVq1CdHQ0Ro0ahU2bNqFatWqQy+U4cuQIkpOTVZ1FIiIiAoN9IiIieg/6+voYOnQozpw5g5s3b+Kbb77BvHnzYGFhgc8//7xE5zp16hR69OgBa2trSCQS7Nq1S2m/IAgICAiAtbU19PT04Onpidu3bxd53twBA6VSKerWrYudO3eWKF9EREQfMwb7RERE9EFq166N+fPnIzIyEhs3bizx8ampqXBzc8OyZcvy3T9//nz89ttvWLZsGS5dugRLS0t07Nix0FYE586dQ//+/TF48GBcv34dgwcPRr9+/XDhwoUS54+IiOhjJBEEQVB1Jj5GSUlJMDExQWJiIoyNjVWdHSIiIrUomyQSCXbu3IlevXoBEGv1ra2tMXHiREydOhUAkJmZiapVq+KXX37BqFGj8j1P//79kZSUhIMHDyq2denSBaampsV+IaEOnycREamXkpRNrNknIiKiCissLAwxMTHo1KmTYptUKkWbNm1w9uzZAo87d+6c0jEA0Llz50KPyczMRFJSktJCRET0sWKwT0RERBVWTEwMAKBq1apK26tWrarYV9BxJT1m7ty5MDExUSw2NjYfkHMiIiLVYrBPREREFZ5E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iIiIqAHLeqKugy37RGQ3g8GA3Nxcm31KpdI6Mc6mTZswYsQIjBkzBuvWrcOhQ4fwwQcfAABmz56NxYsXIykpCUuWLEFBQQGefPJJ/O53v0N4eDgAYMmSJZg/fz7CwsIwdepUVFRU4LvvvsOTTz5pV/r+9re/IT4+HoMGDYLBYMCXX36JAQMGODEHiIiIPBvLeiLPwWCfiOz29ddfIzIy0mZfv379cPbsWQBi9twNGzbg8ccfR0REBNatW4eBAwcCALy9vZGSkoKnnnoKI0eOhLe3N2bMmIHXXnvNeq2kpCTo9Xr861//wsKFCxESEoL77rvP7vSpVCosWrQIly5dglarxdixY7FhwwYnvHIiIqIbA8t6Is8hkyRJcnUiiKjrk8lk+PzzzzF9+nRXJ4WIiIg6AMt6oq6FY/aJiIiIiIiIPAyDfSIiIiIiIiIPw278RERERERERB6GLftEREREREREHobBPhEREREREZGHYbBPRERERERE5GEY7BMRERERERF5GAb7RERERERERB6GwT4RERERERGRh2GwT0RERERERORhGOwTEREREREReZj/B0JDWu+fL69cAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1200x600 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# ---- 训练与验证 ----\n",
    "def train_model():\n",
    "    train_losses = []\n",
    "    val_losses = []\n",
    "    train_accuracies = []\n",
    "    val_accuracies = []\n",
    "    \n",
    "    num_epochs = 50\n",
    "    for epoch in range(num_epochs):\n",
    "        # 训练模式\n",
    "        model.train()\n",
    "        train_loss = 0.0\n",
    "        correct_train = 0\n",
    "        total_train = 0\n",
    "        \n",
    "        for data, labels in train_wifi_loader:\n",
    "            data, labels = data.to(device), labels.to(device)\n",
    "            optimizer.zero_grad()\n",
    "            \n",
    "            outputs = model(data)\n",
    "            loss = criterion(outputs, labels)\n",
    "            loss.backward()\n",
    "            optimizer.step()\n",
    "            \n",
    "            train_loss += loss.item()\n",
    "            _, predicted = torch.max(outputs, 1)\n",
    "            correct_train += (predicted == labels).sum().item()\n",
    "            total_train += labels.size(0)\n",
    "        \n",
    "        avg_train_loss = train_loss / len(train_wifi_loader)\n",
    "        train_accuracy = 100 * correct_train / total_train\n",
    "        train_losses.append(avg_train_loss)\n",
    "        train_accuracies.append(train_accuracy)\n",
    "        \n",
    "        # 验证模式\n",
    "        model.eval()\n",
    "        val_loss = 0.0\n",
    "        correct_val = 0\n",
    "        total_val = 0\n",
    "        \n",
    "        with torch.no_grad():\n",
    "            for data, labels in test_wifi_loader:\n",
    "                data, labels = data.to(device), labels.to(device)\n",
    "                outputs = model(data)\n",
    "                loss = criterion(outputs, labels)\n",
    "                val_loss += loss.item()\n",
    "                _, predicted = torch.max(outputs, 1)\n",
    "                correct_val += (predicted == labels).sum().item()\n",
    "                total_val += labels.size(0)\n",
    "        \n",
    "        avg_val_loss = val_loss / len(test_wifi_loader)\n",
    "        val_accuracy = 100 * correct_val / total_val\n",
    "        val_losses.append(avg_val_loss)\n",
    "        val_accuracies.append(val_accuracy)\n",
    "        \n",
    "        # 打印当前训练和验证的损失与精度\n",
    "        print(f\"Epoch [{epoch+1}/{num_epochs}], Train Loss: {avg_train_loss:.4f}, Train Accuracy: {train_accuracy:.2f}%, Val Loss: {avg_val_loss:.4f}, Val Accuracy: {val_accuracy:.2f}%\")\n",
    "    \n",
    "    return train_losses, val_losses, train_accuracies, val_accuracies\n",
    "\n",
    "# 训练模型\n",
    "train_losses, val_losses, train_accuracies, val_accuracies = train_model()\n",
    "\n",
    "# ---- 绘制学习曲线 ----\n",
    "# 绘制损失曲线\n",
    "plt.figure(figsize=(12, 6))\n",
    "plt.subplot(1, 2, 1)\n",
    "plt.plot(train_losses, label='Train Loss')\n",
    "plt.plot(val_losses, label='Validation Loss')\n",
    "plt.title('Loss Curve')\n",
    "plt.xlabel('Epochs')\n",
    "plt.ylabel('Loss')\n",
    "plt.legend()\n",
    "\n",
    "# 绘制精度曲线\n",
    "plt.subplot(1, 2, 2)\n",
    "plt.plot(train_accuracies, label='Train Accuracy')\n",
    "plt.plot(val_accuracies, label='Validation Accuracy')\n",
    "plt.title('Accuracy Curve')\n",
    "plt.xlabel('Epochs')\n",
    "plt.ylabel('Accuracy (%)')\n",
    "plt.legend()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "da166e8e-2e12-43b2-b96f-d239c054b9e5",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
